home *** CD-ROM | disk | FTP | other *** search
/ Eagles Nest BBS 8 / Eagles_Nest_Mac_Collection_Disc_8.TOAST / Developer Environments / MacCjr / MacC Jr / Library Folder / C Include Folder / HFSdefs.h < prev    next >
Encoding:
Text File  |  1987-01-06  |  13.9 KB  |  727 lines  |  [TEXT/EDIT]

  1. // HFSdefs.h
  2. // Mac File System I/O interface.
  3. // © Copyright 1984, 1985, 1986 Consulair Corp, All Rights Reserved.
  4. // Portions © Copyright Apple Computer, Inc: 1982, 1983, 1984
  5. //            Stanford University, SUMEX project: 1984
  6. // Updated Jan 5, 1986  JSF/WSD
  7. // Requires Macdefs.h
  8.  
  9. #ifndef HFSdefsLoaded
  10.  
  11.   #ifndef MacdefsLoaded
  12.     #include "macdefs.h"
  13.     #endif
  14.   
  15. #define HFSdefsLoaded
  16. #ifdef OSmiscLoaded
  17.   #Options E
  18.    ####You cannot include OSMisc.h and HFSDefs.h in the same file####
  19.    #endif
  20.  
  21. #ifdef OSioLoaded
  22.   #Options E
  23.    ####You cannot include OSIO.h and HFSDefs.h in the same file####
  24.    #endif
  25.  
  26. // Added by Consulair
  27.  
  28.   #define VCBQHdr (*(VCBPtr *)0x358)
  29.   #define FSFCBLen (*(short *)0x3F6)
  30.   #define HFS_System (FSFCBLen >= 0)
  31.   #define HFS_Volume(pb) (pb.ioVSigWord == hfsSigWord)
  32.   typedef short RefNum;
  33.   
  34. // error codes 
  35.   
  36. #define noErr        0
  37. #define dirFulErr    (-33)    /* Directory full */
  38. #define dskFulErr    (-34)    /* Allocation blocks are full (disk full) */
  39. #define nsvErr        (-35)    /* no such volume */
  40. #define ioErr        (-36)    /* I/O error */
  41. #define bdNamErr    (-37)    /* Bad file name or volume name (zero-length?) */
  42. #define fnOpnErr    (-38)    /* File not open */
  43. #define eofErr        (-39)    /* End of file */
  44. #define posErr        (-40)    /* position to before start of file (r/w) */
  45. #define memFulErr    (-41)    /* memory full, or file won't fit (load) */
  46. #define tmfoErr        (-42)    /* too many files open */
  47. #define fnfErr        (-43)    /* File not found */
  48. #define wPrErr        (-44)    /* diskette is write protected */    
  49. #define fLckdErr    (-45)    /* file is locked */
  50. #define vLckdErr    (-46)    /* volume is locked */
  51. #define fBsyErr        (-47)    /* one or more files are open */
  52. #define dupFNErr    (-48)    /* duplicate filename (rename) */
  53. #define opWrErr        (-49)    /* file already open for write */
  54. #define paramErr    (-50)    /* Parameters don't specify an existing volume */
  55. #define rfNumErr    (-51)    /* refnum specifies nonexistent access path */
  56. #define gfpErr        (-52)    /* Error during GetFPos */
  57. #define volOffLinErr    (-53)    /* volume not on line error (was Ejected) */
  58. #define permErr        (-54)    /* trying to open locked file for write */
  59. #define volOnLinErr    (-55)    /* drive volume already on-line at MountVol */
  60. #define nsDrvErr    (-56)    /* no such drive-tried to mount a bad drive num */
  61. #define noMacDskErr    (-57)    /* not a mac diskette (sig bytes are wrong) */
  62. #define extFSErr    (-58)    /* external fs - fs identifier is non-zero or path ref is > 1024 */
  63. #define fsRnErr        (-59)    /* rename problem */
  64. #define badMDBErr    (-60)    /* bad master directory block,must reinitialize */
  65. #define wrPermErr    (-61)    /* permission doesn't allow writing */
  66.  
  67. #define memFullErr    (-108)    /* not enough room in heap zone */
  68.  
  69. #define dirNFErr    (-120)    /* Directory not found */
  70. #define twwdoErr    (-121)    /* Too many working directories open */
  71. #define badMovErr    (-122)    /* Attempted to move into offspring */
  72. #define wrgVolTypErr    (-123)    /* Attempt to do HFS operation on nonHFS volume */
  73. #define fsDSIntErr    (-127)    /* Internal file system error */
  74.  
  75.  
  76. #define    firstDskErr     -84
  77. #define    lastDskErr     -64
  78.  
  79. #define asnycTrpBit     0x0400    
  80.  
  81. /* IOFlAttrib masks */
  82.  
  83. #define ioFileLocked    0x0001
  84. #define ioDataForkOpen    0x0004
  85. #define ioResForkOpen    0x0008
  86. #define ioIsDirectory    0x0010
  87. #define    ioEitherForkOpen 0x0080
  88.  
  89. /* Flags in file information used by the finder */
  90.  
  91. #define fHasBundle    0x2000
  92. #define fInvisible    0x4000
  93.  
  94. #define fTrash         -3
  95. #define fDesktop    -2
  96. #define fDisk         0
  97.  
  98. /* Positioning modes */
  99.  
  100. #define fsAtMark    0
  101. #define fsFromStart    1
  102. #define fsFromLEOF    2
  103. #define fsFromMark    3
  104. #define rdVerify    64
  105.  
  106. /* Values for requesting read/write permission */
  107.  
  108. #define fsCurPerm    0
  109. #define fsRdPerm    1
  110. #define fsWrPerm    2
  111. #define fsRdWrPerm    3
  112. #define fsRdWrShPerm    4
  113.  
  114. #define mfsSigWord 0xd2d7
  115. #define hfsSigWord 0x4244
  116.  
  117. #define FCBSPtr *((Ptr *) 0x34e)
  118. #define FCBLen *((short *) 0x3f6)
  119.  
  120. #define rootDirID 2
  121.  
  122. #define String(size) struct { unsigned char length; char text[size]; }
  123.  
  124. typedef    Str255 *StringPtr;
  125.  
  126. typedef union
  127.     {
  128.     char filler[22];
  129.     struct
  130.         {
  131.         long param1;
  132.         long param2;
  133.         long param3;
  134.         } printer;
  135.     struct
  136.         {
  137.         Ptr buffPtr;
  138.         } disks;
  139.     } csParamType, *csParamTypePtr;
  140.  
  141.  
  142. typedef struct QElem
  143.     {
  144.     struct QElem *qLink;
  145.     short qType;
  146.     short qData[0];
  147.     } QElem, *QElemPtr;
  148.  
  149. typedef struct
  150.     {
  151.     short qFlags;
  152.     QElemPtr qHead;
  153.     QElemPtr qTail;
  154.     } QHdr, *QHdrPtr;
  155.  
  156. typedef struct 
  157.     {
  158.     OSType fdType;
  159.     OSType fdCreator;
  160.     short fdFlags;
  161.     Point fdLocation;
  162.     short fdFldr;
  163.     } FInfo, *FInfoPtr;
  164.  
  165.  
  166. typedef struct            /* ParamBlockRec */
  167.     {
  168.     QElemPtr qLink;        
  169.     short qType;
  170.     short ioTrap;
  171.     Ptr ioCmdAddr;
  172.     ProcPtr ioCompletion;
  173.     OSErr ioResult;    
  174.     StringPtr ioNamePtr;
  175.     short ioVRefNum;
  176.  
  177.     union 
  178.         {
  179.         struct            /* ioParam */
  180.             {
  181.             short ioRefNum;
  182.             char ioVersNum;
  183.             char ioPermssn;
  184.             Ptr ioMisc;
  185.             Ptr ioBuffer;
  186.             long ioReqCount;
  187.             long ioActCount;
  188.             short ioPosMode;
  189.             long ioPosOffset;
  190.             } ioParam;
  191.         struct            /* fileParam */
  192.             {
  193.             short ioFRefNum;
  194.             char ioFVersNum;
  195.             char filler1;
  196.             short ioFDirIndex;
  197.             char ioFlAttrib;
  198.             char ioFlVersNum;
  199.             FInfo ioFlFndrInfo;
  200.             long ioFlNum;
  201.             short ioFlStBlk;
  202.             long ioFlLgLen;
  203.             long ioFlPyLen;
  204.             short ioFlRStBlk;
  205.             long ioFlRLgLen;
  206.             long ioFlRPyLen;
  207.             long ioFlCrDat;
  208.             long ioFlMdDat;
  209.             } fileParam;
  210.         struct            /* volumeParam */
  211.             {
  212.             long filler2;
  213.             short ioVolIndex;
  214.             long ioVCrDate;
  215.             long ioVLsBkUp;
  216.             short ioVAtrb;
  217.             short ioVNmFls;
  218.             short ioVDirSt;
  219.             short ioVBlLn;
  220.             short ioVNmAlBlks;
  221.             long ioVAlBlkSiz;
  222.             long ioVClpSiz;
  223.             short ioAlBlSt;
  224.             long ioVNxtFNum;
  225.             short ioVFrBlk;
  226.             } volumeParam;
  227.         struct            /* cntrlParam */
  228.             {
  229.             short ioCRefNum;
  230.             short csCode;
  231.             csParamType csParam;
  232.             } cntrlParam;
  233.         } ParamUnion;
  234.     } ParamBlockRec, *ParamBlkPtr;
  235.  
  236. /* separate structures for above if union construction is not desired */
  237.  
  238. typedef struct            /* ioParam */
  239.     {
  240.     QElemPtr qLink;
  241.     short qType;
  242.     short ioTrap;
  243.     Ptr ioCmdAddr;
  244.     ProcPtr ioCompletion;
  245.     OSErr ioResult;
  246.     StringPtr ioNamePtr;
  247.     short ioVRefNum;
  248.     short ioRefNum;
  249.     char ioVersNum;
  250.     char ioPermssn;
  251.     Ptr ioMisc;
  252.     Ptr ioBuffer;
  253.     long ioReqCount;
  254.     long ioActCount;
  255.     short ioPosMode;
  256.     long ioPosOffset;
  257.     } ioParam, *ioParamPtr;
  258.  
  259. typedef struct            /* fileParam */
  260.     {
  261.     QElemPtr qLink;
  262.     short qType;
  263.     short ioTrap;
  264.     Ptr ioCmdAddr;
  265.     ProcPtr ioCompletion;
  266.     OSErr ioResult;
  267.     StringPtr ioNamePtr;
  268.     short ioVRefNum;
  269.     short ioFRefNum;
  270.     char ioFVersNum;
  271.     char filler1;
  272.     short ioFDirIndex;
  273.     char ioFlAttrib;
  274.     char ioFlVersNum;
  275.     FInfo ioFlFndrInfo;
  276.     long ioFlNum;
  277.     short ioFlStBlk;
  278.     long ioFlLgLen;
  279.     long ioFlPyLen;
  280.     short ioFlRStBlk;
  281.     long ioFlRLgLen;
  282.     long ioFlRPyLen;
  283.     long ioFlCrDat;
  284.     long ioFlMdDat;
  285.     } fileParam, *fileParamPtr;
  286.  
  287. typedef struct            /* volumeParam */
  288.     {
  289.     QElemPtr qLink;
  290.     short qType;
  291.     short ioTrap;
  292.     Ptr ioCmdAddr;
  293.     ProcPtr ioCompletion;
  294.     OSErr ioResult;
  295.     StringPtr ioNamePtr;
  296.     short ioVRefNum;
  297.     long filler2;
  298.     short ioVolIndex;
  299.     long ioVCrDate;
  300.     long ioVLsBkUp;
  301.     short ioVAtrb;
  302.     short ioVNmFls;
  303.     short ioVDirSt;
  304.     short ioVBlLn;
  305.     short ioVNmAlBlks;
  306.     long ioVAlBlkSiz;
  307.     long ioVClpSiz;
  308.     short ioAlBlSt;
  309.     long ioVNxtFNum;
  310.     short ioVFrBlk;
  311.     } volumeParam, *volumeParamPtr;
  312.  
  313.  
  314. typedef struct            /* cntrlParam */
  315.     {
  316.     QElemPtr qLink;
  317.     short qType;
  318.     short ioTrap;
  319.     Ptr ioCmdAddr;
  320.     ProcPtr ioCompletion;
  321.     OSErr ioResult;
  322.     StringPtr ioNamePtr;
  323.     short ioVRefNum;
  324.     short ioCRefNum;
  325.     short csCode;
  326.     csParamType csParam;
  327.     } cntrlParam, *cntrlParamPtr;
  328.  
  329.  
  330. typedef struct            /* HParamBlockRec */
  331.     {
  332.     QElemPtr qLink;
  333.     short qType;
  334.     short ioTrap;
  335.     Ptr ioCmdAddr;
  336.     ProcPtr ioCompletion;
  337.     OSErr ioResult;
  338.     StringPtr ioNamePtr;
  339.     short ioVRefNum;
  340.  
  341.     union
  342.         {
  343.         struct            /* ioParam */
  344.             {
  345.             short ioRefNum;
  346.             char ioVersNum;
  347.             char ioPermssn;
  348.             Ptr ioMisc;
  349.             Ptr ioBuffer;
  350.             long ioReqCount;
  351.             long ioActCount;
  352.             short ioPosMode;
  353.             long ioPosOffset;
  354.             } ioParam;
  355.         struct            /* fileParam */
  356.             {
  357.             short ioFRefNum;
  358.             char ioFVersNum;
  359.             char filler1;
  360.             short ioFDirIndex;
  361.             char ioFlAttrib;
  362.             char ioFLVersNum;
  363.             FInfo ioFlFndrInfo;
  364.             long ioDirID;
  365.             short ioFlStBlk;
  366.             long ioFlLgLen;
  367.             long ioFlPyLen;
  368.             short ioFlRStBlk;
  369.             long ioFlRLgLen;
  370.             long ioFlRPyLen;
  371.             long ioFlCrDat;
  372.             long ioFlMdDat;
  373.             } fileParam;
  374.         struct                    /* volumeParam */
  375.             {
  376.             long filler4;
  377.             short ioVolIndex;
  378.             long ioVCrDate;
  379.             long ioVLsMod;
  380.             short ioVAtrb;
  381.             short ioVNmFls;
  382.             short ioVBitMap;
  383.             short ioVAllocPtr;
  384.             short ioVNmAlBlks;
  385.             long ioVAlBlkSiz;
  386.             long ioVClpSiz;
  387.             short ioAlBlSt;
  388.             long ioVNxtCNID;
  389.             short ioVFrBlk;
  390.             short ioVSigWord;
  391.             short ioVDrvInfo;
  392.             short ioVDRefNum;
  393.             short ioVFSID;
  394.             long ioVBkUp;
  395.             short ioVSeqNum;
  396.             long ioVWrCnt;
  397.             long ioVFilCnt;
  398.             long ioVDirCnt;
  399.             long ioVFndrInfo[8];
  400.             } volumeParam;
  401.         } HParamUnion;
  402.     } HParamBlockRec, *HParmBlkPtr;
  403.  
  404. /* separate structures for above if union construction is not desired */
  405.  
  406. typedef struct                    /* ioParam */
  407.     {
  408.     QElemPtr qLink;
  409.     short qType;
  410.     short ioTrap;
  411.     Ptr ioCmdAddr;
  412.     ProcPtr ioCompletion;
  413.     OSErr ioResult;
  414.     StringPtr ioNamePtr;
  415.     short ioVRefNum;
  416.     short ioRefNum;
  417.     char ioVersNum;
  418.     char ioPermssn;
  419.     Ptr ioMisc;
  420.     Ptr ioBuffer;
  421.     long ioReqCount;
  422.     long ioActCount;
  423.     short ioPosMode;
  424.     long ioPosOffset;
  425.     } HioParam, *HioParamPtr;
  426.  
  427.  
  428. typedef struct                    /* fileParam */
  429.     {
  430.     QElemPtr qLink;
  431.     short qType;
  432.     short ioTrap;
  433.     Ptr ioCmdAddr;
  434.     ProcPtr ioCompletion;
  435.     OSErr ioResult;
  436.     StringPtr ioNamePtr;
  437.     short ioVRefNum;
  438.     short ioFRefNum;
  439.     short filler2;
  440.     short ioFDirIndex;
  441.     char ioFlAttrib;
  442.     char filler3;
  443.     FInfo ioFlFndrInfo;
  444.     long ioDirID;
  445.     short ioFlStBlk;
  446.     long ioFlLgLen;
  447.     long ioFlPyLen;
  448.     short ioFlRStBlk;
  449.     long ioFlRLgLen;
  450.     long ioFlRPyLen;
  451.     long ioFlCrDat;
  452.     long ioFlMdDat;
  453.     } HfileParam, *HfileParamPtr;
  454.  
  455.  
  456. typedef struct                    /* volumeParam */
  457.     {
  458.     QElemPtr qLink;
  459.     short qType;
  460.     short ioTrap;
  461.     Ptr ioCmdAddr;
  462.     ProcPtr ioCompletion;
  463.     OSErr ioResult;
  464.     StringPtr ioNamePtr;
  465.     short ioVRefNum;
  466.     long filler4;
  467.     short ioVolIndex;
  468.     long ioVCrDate;
  469.     long ioVLsMod;
  470.     short ioVAtrb;
  471.     short ioVNmFls;
  472.     short ioVBitMap;
  473.     short ioVAllocPtr;
  474.     short ioVNmAlBlks;
  475.     long ioVAlBlkSiz;
  476.     long ioVClpSiz;
  477.     short ioAlBlSt;
  478.     long ioVNxtFNum;
  479.     short ioVFrBlk;
  480.     short ioVSigWord;
  481.     short ioVDrvInfo;
  482.     short ioVDRefNum;
  483.     short ioVFSID;
  484.     long ioVBkUp;
  485.     short ioVSeqNum;
  486.     long ioVWrCnt;
  487.     long ioVFilCnt;
  488.     long ioVDirCnt;
  489.     long ioVFndrInfo[8];
  490.     } HvolumeParam, *HvolumeParamPtr;
  491.     
  492.  
  493. typedef struct                    /* CInfoPBRec */
  494.     {
  495.     QElemPtr qLink;
  496.     short qType;
  497.     short ioTrap;
  498.     Ptr ioCmdAddr;
  499.     ProcPtr ioCompletion;
  500.     OSErr ioResult;
  501.     StringPtr ioNamePtr;
  502.     short ioVRefNum;
  503.     short ioFRefNum;
  504.     short filler1;
  505.     short ioFDirIndex;
  506.     char ioFlAttrib;
  507.     char filler2;
  508.     union
  509.         {
  510.         struct                    /* hFileInfo */
  511.             {
  512.             FInfo ioFlFndrInfo;
  513.             long ioFlNum;
  514.             short ioFlStBlk;
  515.             long ioFlLgLen;
  516.             long ioFlPyLen;
  517.             short ioFlRStBlk;
  518.             long ioFlRLgLen;
  519.             long ioFlRPyLen;
  520.             long ioFlCrDat;
  521.             long ioFlMdDat;
  522.             long ioFlBkDat;
  523.             FInfo ioFlXFndrInfo;
  524.             long ioFlParID;
  525.             long ioFlClpSiz;
  526.             } hFileInfo;
  527.         struct                    /* dirInfo */
  528.             {
  529.             short ioDrUsrWds[8];
  530.             long ioDrDirID;
  531.             short ioDrNmFls;
  532.             short filler3[9];
  533.             long ioDrCrDat;
  534.             long ioDrMdDat;
  535.             long ioDrBkDat;
  536.             short ioDrFndrInfo[8];
  537.             long ioDrParID;
  538.             } dirInfo;
  539.         } CInfoUnion;
  540.     } CInfoPBRec, *CInfoPBPtr;
  541.  
  542. /* separate structures for above if union construction is not desired */
  543.  
  544. typedef struct
  545.     {
  546.     QElemPtr qLink;
  547.     short qType;
  548.     short ioTrap;
  549.     Ptr ioCmdAddr;
  550.     ProcPtr ioCompletion;
  551.     OSErr ioResult;
  552.     StringPtr ioNamePtr;
  553.     short ioVRefNum;
  554.     short ioFRefNum;
  555.     short filler1;
  556.     short ioFDirIndex;
  557.     char ioFlAttrib;
  558.     char filler2;
  559.     FInfo ioFlFndrInfo;
  560.     long ioFlNum;
  561.     short ioFlStBlk;
  562.     long ioFlLgLen;
  563.     long ioFlPyLen;
  564.     short ioFlRStBlk;
  565.     long ioFlRLgLen;
  566.     long ioFlRPyLen;
  567.     long ioFlCrDat;
  568.     long ioFlMdDat;
  569.     long ioFlBkDat;
  570.     FInfo ioFlXFndrInfo;
  571.     long ioFlParID;
  572.     long ioFlClpSiz;
  573.     } hFileInfoPBRec, *hFileInfoPBPtr;
  574.  
  575.  
  576. typedef struct
  577.     {
  578.     QElemPtr qLink;
  579.     short qType;
  580.     short ioTrap;
  581.     Ptr ioCmdAddr;
  582.     ProcPtr ioCompletion;
  583.     OSErr ioResult;
  584.     StringPtr ioNamePtr;
  585.     short ioVRefNum;
  586.     short ioFRefNum;
  587.     short filler1;
  588.     short ioFDirIndex;
  589.     char ioFlAttrib;
  590.     char filler2;
  591.     short ioDrUsrWds[8];
  592.     long ioDrDirID;
  593.     short ioDrNmFls;
  594.     short filler3[9];
  595.     long ioDrCrDat;
  596.     long ioDrMdDat;
  597.     long ioDrBkDat;
  598.     short ioDrFndrInfo[8];
  599.     long ioDrParID;
  600.     long filler4;
  601.     } DirInfoPBRec, *DirInfoPBPtr;
  602.  
  603.  
  604.  
  605. typedef struct            /* CMovePBRec */
  606.     {
  607.     QElemPtr qLink;
  608.     short qType;
  609.     short ioTrap;
  610.     Ptr ioCmdAddr;
  611.     ProcPtr ioCompletion;
  612.     OSErr ioResult;
  613.     StringPtr ioNamePtr;
  614.     short ioVRefNum;
  615.     long filler1;
  616.     StringPtr ioNewName;
  617.     long filler2;
  618.     long ioNewDirID;
  619.     long filler3[2];
  620.     long ioDirID;
  621.     } CMovePBRec, *CMovePBPtr;
  622.  
  623.  
  624. typedef struct            /* WDPBRec */
  625.     {
  626.     QElemPtr qLink;
  627.     short qType;
  628.     short ioTrap;
  629.     Ptr ioCmdAddr;
  630.     ProcPtr ioCompletion;
  631.     OSErr ioResult;
  632.     StringPtr ioNamePtr;
  633.     short ioVRefNum;
  634.     short filler1;
  635.     short ioWDIndex;
  636.     long ioWDProcID;
  637.     short ioWDVRefNum;
  638.     short filler2[7];
  639.     long ioWDDirID;
  640.     } WDPBRec, *WDPBPtr;
  641.     
  642.  
  643. typedef struct
  644.     {
  645.     QElemPtr qLink;
  646.     short qType;
  647.     short ioTrap;
  648.     Ptr ioCmdAddr;
  649.     ProcPtr ioCompletion;
  650.     OSErr ioResult;
  651.     StringPtr ioNamePtr;
  652.     short ioVRefNum;
  653.     short ioRefNum;
  654.     short filler;
  655.     long ioFCBIndx;
  656.     long ioFCBFlNm;
  657.     short ioFCBFlags;
  658.     short ioFCBStBlk;
  659.     long ioFCBEOF;
  660.     long ioFCBPLen;
  661.     long ioFCBCrPs;
  662.     short ioFCBVRefNum;
  663.     long ioFCBClpSiz;
  664.     long ioFCBParID;
  665.     } FCBPBRec, *FCBPBPtr;
  666.  
  667. typedef struct            /* VCB */
  668.     {
  669.     QElemPtr qLink;
  670.     short qType;
  671.     short vcbFlags;
  672.     short vcbSigWord;
  673.     long vcbCrDate;
  674.     long vcbLsBkUp;
  675.     short vcbAtrb;
  676.     short vcbNmFls;
  677.     short vcbVBMSt;
  678.     short vcbAllocPtr;
  679.     short vcbNmAlBlks;
  680.     long vcbAlBlkSiz;
  681.     long vcbClpSiz;
  682.     short vcbAlBlSt;
  683.     long vcbNxtCNID;
  684.     short vcbFreeBlks;
  685.     String(27) vcbVN;
  686.     short vcbDrvNum;
  687.     short vcbDRefNum;
  688.     short vcbFSID;
  689.     short vcbVRefNum;
  690.     Ptr vcbMAdr;
  691.     Ptr vcbBufAdr;
  692.     short vcbMLen;
  693.     short vcbDirIndex;
  694.     short vcbDirBlk;
  695.     long vcbVolBkUp;
  696.     short vcbVSeqNum;
  697.     long vcbWrCnt;
  698.     long vcbXTClpSiz;
  699.     long vcbCtClpSiz;
  700.     short vcbNmRtDirs;
  701.     long vcbFilCnt;
  702.     long vcbDirCnt;
  703.     long vcbFndrInfo[8];
  704.     short vcbVCSize;
  705.     short vcbVBMCSiz;
  706.     short vcbCtlCSiz;
  707.     short vcbXTAlBks;
  708.     short vcbCTAlBks;
  709.     short vcbXTRef;
  710.     short vcbCTRef;
  711.     long vcbCtlBuf;
  712.     long vcbDirIDM;
  713.     short vcbOffsM;
  714.     } VCB, *VCBPtr;
  715.  
  716. typedef struct        /* DrvQEl */
  717.     {
  718.     QElemPtr qLink;
  719.     short qType;
  720.     short dQDrive;
  721.     short dQRefNum;
  722.     short dQFSID;
  723.     short dQDrvSize;
  724.     } DrvQEl, *DrvQElPtr;    
  725.  
  726. #endif
  727.